home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / misc / utilitys / tcap.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  14.4 KB  |  337 lines

  1. 3  REM ***** TCAP PROGRAM BY ALLEN KATZ **********************
  2. 4  FOR I=1 TO 16:PRINT:NEXT:REM OPTION#0,"W",63:OPTION#2,"W",80
  3. 5  PRINT:PRINT"TSC ELECTRICAL CIRCUIT ANALYSIS PROGRAM V2.5.1 3/21/84": PRINT
  4. 7  PRINT "ALL UNITS IN VOLTS, AMPS, OHMS, FARADS, HENERIES, HZ, ETC."
  5. 8  PRINT "NODE VOLTAGES AND IMPEDANCES REFERENCED TO NODE 0 (ground)."
  6. 9  PRINT "ALL CALC ASSUMED AT DC (0 FREQ) UNLESS FREQ SET WITH F OPTION."
  7. 10  PRINT:PRINT,"K2UYH --- modified for ibm pc ---  wa2tif":PRINT
  8. 15  CLEAR:PI=3.1416:P2=PI*2:P6=PI/180: REM PRECISION 4
  9. 95  REM PRINT: INPUT "DO YO WISH TO READ A FILE (Y/N)"; A$
  10. 96  REM IF A$<>"N" THEN 95
  11. 100  PRINT: INPUT "WHAT IS THE HIGHEST NODE NUMBER"; LS
  12. 101  IF LS<1 OR LS<>INT(LS) THEN 100
  13. 110  INPUT "HOW MANY VOLTAGE SOURCES ARE IN THE CIRCUIT"; LV
  14. 112  IF LV<0 OR LV<>INT(LV) THEN 110 ELSE NO=LS+LV
  15. 115  REM KILL Y,X,T,N1,N2,V,G
  16. 120  INPUT "HOW MANY COMPONENTS ARE IN THE CIRCUIT"; CT
  17. 125  IF CT<1 OR CT<>INT(CT) THEN 120
  18. 130  DIM Y(NO,NO+1),X(NO,NO+1),T(CT+10),N1(CT+10),N2(CT+10),V(CT+10),G(CT+10)
  19. 131  FOR CR=1 TO CT: GOSUB 5000: NEXT: GOTO 1150
  20. 990  REM******************** MENUE ********************
  21. 1000  PRINT: INPUT "YOUR SELECTION (A/C/D/END/F/H<ELP>/I/L/N/R/S/V/Z)"; C$: DV=0
  22. 1007  IF C$="END" THEN PRINT: PRINT "END TSC CAP": END
  23. 1008  C$=LEFT$(C$,2)
  24. 1009  IF C$="A" THEN GOSUB 4995
  25. 1020  IF C$="N" THEN 10
  26. 1030  IF C$="S" THEN GOSUB 3000
  27. 1050  IF C$="F" THEN GOSUB 4000
  28. 1070  IF C$="I" THEN GOSUB 12000
  29. 1085  IF C$="L" THEN GOSUB 11000
  30. 1090  IF C$="V" THEN GOSUB 6050
  31. 1110  IF C$="D" THEN GOSUB 7000
  32. 1130  IF C$="Z" THEN GOSUB 8002
  33. 1135  IF C$="R" THEN GOSUB 4992
  34. 1138  IF C$="C" THEN GOSUB 9000
  35. 1140  IF LEFT$(C$,1)<>"H" THEN 990
  36. 1150  PRINT: PRINT "OPTIONS:"
  37. 1151  PRINT TAB(10), "A - ADD CIRCUIT COMPONTENT"
  38. 1153  PRINT TAB(10), "S - SAVE CIRCUIT FILE"
  39. 1154  PRINT TAB(10), "F - SET OR SWEEP FREQUENCY"
  40. 1155  PRINT TAB(10), "I - CALCULATE SOURCE CURRENTS"
  41. 1156  PRINT TAB(10), "L - LIST PRESENT COMPONENTS"
  42. 1157  PRINT TAB(10), "V - CALCULATE NODE VOLTAGES"
  43. 1158  PRINT TAB(10), "D - DELETE CIRCUIT COMPONENT"
  44. 1159  PRINT TAB(10), "Z - CALCULATE NODE IMPEDANCE"
  45. 1160  PRINT TAB(10), "R - REPLACE CIRCUIT COMPONENT"
  46. 1162  PRINT TAB(10), "N - NEW CIRCUIT"
  47. 1164  PRINT TAB(10), "C - CHANGE AND SWEEP COMPONENT VALUE"
  48. 1165  PRINT TAB(10), "END - END SESSION": GOTO 990
  49. 1990  REM ************ FILE LOAD ******************
  50. 2000  PRINT: INPUT "FILE NAME, DIR OR QUIT"; F$
  51. 2002  IF F$="DIR" THEN DIR "*.CAP": GOTO 2000 ELSE IF F$="QUIT" THEN 1000
  52. 2005  F$=F$+".CAP": OPEN#1, "I", F$
  53. 2006  READ#1, CT, LS, LV: KILL Y,X,T,N1,N2,V,G
  54. 2010  NO=LS+LV:DIM Y(NO,NO+1),X(NO,NO+1),T(CT+10),N1(CT+10),N2(CT+10),V(CT+10),G(CT+10)
  55. 2020  FOR P=1 TO CT: READ#1,T(P),N1(P),N2(P),V(P),G(P): NEXT
  56. 2150  CLOSE#1: GOTO 990
  57. 2990  REM ************ FILE SAVE ******************
  58. 3000  PRINT: INPUT "FILE NAME"; F$: F$=F$+".CAP"
  59. 3005  ERASE F$: OPEN#1,"O",F$
  60. 3010  WRITE#1, CT, LS, LV
  61. 3025  FOR P=1 TO CT: WRITE#1,T(P),N1(P),N2(P),V(P),G(P): NEXT
  62. 3030  CLOSE#1: RETURN
  63. 3990  REM ************* FREQ SWEEP MODULE *****************
  64. 4000  PRINT: PRINT "MODES:"
  65. 4001  PRINT TAB(10), "1 - SINGLE FREQUENCY"
  66. 4002  PRINT TAB(10), "2 - LINEAR FREQUENCY SWEEP"
  67. 4003  PRINT TAB(10), "3 - LOG FREQUENCY SWEEP"
  68. 4010  PRINT: INPUT "FREQUENCY MODE"; LX
  69. 4020  IF LX<1 OR LX>3 THEN 4000
  70. 4050  IF LX>1 THEN 4105
  71. 4060  PRINT: INPUT "DESIRED FREQUENCY"; W
  72. 4062  PRINT" FREQUENCY SET TO "W" FOR ALL <I>, <V>, <Z> AND <C> CALCULATIONS": W=P2*W: RETURN
  73. 4105  PRINT: F2$="FREQUENCY": F1$="FREQ"
  74. 4110  PRINT:INPUT "MIN FREQ, MAX FREQ AND # OF POINTS";F1,F2,IN
  75. 4130  IF F1>=0 AND F2>=0 AND F2>=F1 THEN 4190
  76. 4140  PRINT"IMPROPER ENTRY": GOTO 4110
  77. 4190  PRINT "WHICH NODE? ( 1 -"LS")  ";:INPUT ND
  78. 4200  IF ND>LS OR ND<1 THEN PRINT"NODES ARE FROM 1 TO"LS"ONLY.":GOTO 4190
  79. 4220  IF LX=2 THEN F3=F1:F4=F2:GOTO 4240
  80. 4225  F4=LOG(F2)/LOG(10):IF F1=0 THEN F3=0 ELSE F3=LOG(F1)/LOG(10)
  81. 4240  PRINT: PRINT "WORKING";: I=0: M=IN+1: II=(F4-F3)/IN
  82. 4242  REM KILL FP,FR,FY,FF: DIM FP(M),FR(M),FY(M),FF(M)
  83. 4250  FOR FX=F3 TO F4 STEP II: I=I+1: PRINT I;
  84. 4255  IF LX=3 THEN IF FX<>0 THEN W=P2*10^FX ELSE W=0
  85. 4257  IF LX=2 THEN W=P2*FX
  86. 4258  IF LX=3 AND FX<>0 THEN FF(I)=10^FX ELSE FF(I)=FX
  87. 4260  GOSUB 10000: GOSUB 6150
  88. 4270  FY(I)=Y(ND,0): FR(I)=X(ND,0): NEXT: W=0
  89. 4400  PRINT: PRINT,"VOLTAGE - "F2$" TABULATION" TAB(50)F$: PRINT
  90. 4410  PRINT "F1$" TAB(15)"REAL"TAB(26)"IMAGINARY"TAB(38)"MAGNITUDE"TAB(53)"PHASE ANGLE":PRINT:CN=0
  91. 4415  FOR I=1 TO M: MG=SQR(FY(I)^2+FR(I)^2)
  92. 4430  IF DV=0 AND CN<>0 AND CN/14=INT(CN/14) THEN INPUT"PRESS <CR> TO CONTINUE"; A$
  93. 4440  CN=CN+1:IF FY(I)=0 THEN K=SGN(FR(I))*90 ELSE IF FY(I)>0 THEN K=1/P6*ATN(FR(I)/FY(I)) ELSE K=1/P6*ATN(FR(I)/FY(I))+180
  94. 4450  PRINT FF(I) TAB(12)FY(I) TAB(23)FR(I) TAB(38)MG TAB(53)K
  95. 4460  NEXT: PRINT:
  96. 4465  PRINT:INPUT"WANT TO PLOT VOLTAGE (Y/N)";Q$:IF Q$="Y" THEN NA$="VOLTAGE ":V$="V":DV=0:GOTO 4500
  97. 4470  PRINT:INPUT"WANT TO PLOT PHASE ANGLE (Y/N)";Q$:IF Q$="Y" THEN NA$="ANGLE ":V$="P":DV=0:GOTO 4500
  98. 4490  RETURN
  99. 4500  PRINT: INPUT "LINE WIDTH (TYP 80)"; LL: XX=LL: GOTO 13211
  100. 4990  REM *********** COMPONENT INPUT/ADD/REPLACE **************
  101. 4992  PRINT: INPUT "COMPONENT NUMBER";L
  102. 4993  IF L<=CT AND L>0 THEN ZN=L: GOTO 5010 ELSE PRINT"INVALID COMPONENT NUMBER. ENTRY IGNORED.":RETURN
  103. 4995  ZN=CT: CT=CT+1
  104. 5000  ZN=ZN+1: IF CR>1 THEN 5010
  105. 5001  PRINT: PRINT "COMPONENT SELECTION SECTION"
  106. 5010  PRINT: PRINT "1 = RESISTOR"
  107. 5011  PRINT "2 = INDUCTOR"
  108. 5012  PRINT "3 = CAPACITOR"
  109. 5013  PRINT "4 = CURRENT SOURCE"
  110. 5014  PRINT "5 = VOLTAGE SOURCE"
  111. 5015  PRINT "6 = NPN TRANSISTOR"
  112. 5016  PRINT "7 = PNP TRANSISTOR"
  113. 5017  PRINT "8 = OPERATIONAL AMPLIFIER": PRINT
  114. 5019  INPUT "TYPE OF CIRCUIT ELEMENT"; D$
  115. 5020  TY=VAL(D$):IF TY<1 OR TY>8 THEN 5010 ELSE 5110
  116. 5080  INPUT N1(ZN), N2(ZN), V(ZN)
  117. 5085  IF V(ZN)<0 THEN INPUT "ELEMENT VALUE MUST BE GREATER THAN 0, PROPER VALUE"; V(ZN)
  118. 5090  IF N1(ZN)<=LS AND N2(ZN)<=LS AND N1(ZN)>=0 AND N2(ZN)>=0 THEN RETURN
  119. 5100  PRINT"IMPROPER NODE. ENTRY IGNORED"
  120. 5105  T(ZN)=0:ZN=ZN-1:RETURN
  121. 5110  PRINT: PRINT "COMPONENT #"; ZN: PRINT
  122. 5111  T(ZN)=TY:ON TY GOTO 5120,5140,5150,5160,5190,5200,5200,5230
  123. 5120  PRINT"NODE A","NODE B","RESISTANCE";:GOTO 5080
  124. 5140  PRINT"NODE A","NODE B","INDUCTANCE";:GOTO 5080
  125. 5150  PRINT"NODE A","NODE B","CAPACITANCE";:GOTO 5080
  126. 5160  PRINT"- NODE","+NODE","CURRENT MAG.","PHASE ANGLE";
  127. 5170  INPUT N1(ZN), N2(ZN), V(ZN), G(ZN)
  128. 5180  IF N1(ZN)<=LS AND N2(ZN)<=LS AND N1(ZN)>=0 AND N2(ZN)>=0 THEN RETURN ELSE 5100
  129. 5190  PRINT"- NODE","+ NODE","VOLTAGE MAG.","PHASE ANGLE";:GOTO 5170
  130. 5200  PRINT"BASE NODE","EMITTER NODE","COLLECTOR NODE","BETA";:GOTO 5170
  131. 5230  PRINT"OUTPUT","- INPUT","+ INPUT","GAIN FACTOR";:GOTO 5170
  132. 6000  REM *************** NODE VOLTAGE CALC ****************
  133. 6010  PRINT: PRINT" NODE? (0 -"LS")  ";: INPUT ND: PRINT: PRINT "WORKING": GOSUB 10000
  134. 6020  IF ND>LS THEN PRINT"THE HIGHEST NODE NUMBER IS "LS:GOTO 6010
  135. 6040  IF ND>=0 THEN 6060
  136. 6050  PRINT:PRINT"ENTER NUMBER FROM 0-"LS"AN ENTRY OF 0 WILL PROVIDE SOLUTION AT ALL NODES":GOTO 6010
  137. 6060  GOSUB 6150
  138. 6065  PRINT: IF C$="I" THEN PRINT,F$,"CURRENT" ELSE GOTO 6066
  139. 6066  IF C$= "V" THEN PRINT,F$,"VOLTAGE" ELSE IF C$="Z" THEN PRINT,F$,"IMPEDANCE"
  140. 6070  PRINT"NODE"TAB(9)"REAL"TAB(23)"IMAGINARY"TAB(38)"MAGNITUDE"TAB(53)"PHASE ANGLE"
  141. 6075  IF C$="I"THEN RETURN
  142. 6080  IF ND=0 THEN 6090
  143. 6085  L=ND:GOTO 6100
  144. 6090  FOR L=1 TO LS
  145. 6100  MG=SQR(Y(L,0)^2+X(L,0)^2):IF Y(L,0)=0 THEN PA=90*SGN(X(L,0)) ELSE IF Y(L,0)>0 THEN PA=1/P6*ATN(X(L,0)/Y(L,0)) ELSE PA=1/P6*ATN(X(L,0)/Y(L,0))+180
  146. 6105  REM PRINT N1(LQ)"-"N2(LQ):GOTO 6110
  147. 6106  PRINT
  148. 6110  PRINT N1(LQ)"-"N2(LQ) TAB(9)Y(L,0) TAB(23)X(L,0) TAB(38)MG TAB(53)PA
  149. 6115  IF DV=0 AND L/11=INT(L/11)THEN INPUT"PRESS <CR> TO CONTINUE";FR:PRINT
  150. 6120  IF ND=0 THEN NEXT L
  151. 6125  IF C$="I" THEN RETURN
  152. 6130  REM IF DV=0 THEN PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN DV=2: GOTO 6065
  153. 6140  RETURN
  154. 6150  FOR L=1 TO NO: IF Y(L,L)^2+X(L,L)^2<>0 THEN 6155 ELSE FOR LT=1 TO NO:IF Y(L,LT)^2+X(L,LT)^2<>0 OR Y(LT,L)^2+X(LT,L)^2<>0 THEN 6155 ELSE NEXT LT,L:IF Y(L,NO+1)^2+X(L,NO+1)^2<>0 THEN 6155 ELSE Y(L,L)=1
  155. 6155  FOR L=1 TO NO
  156. 6160  DE=Y(L,L)^2+X(L,L)^2:IF DE>0 OR (L=NO AND DE<>0) THEN 6168
  157. 6162  IF L=NO THEN 6164 ELSE FOR LT=L+1 TO NO:IF (Y(L,L)+Y(LT,L))^2+(X(L,L)+X(LT,L))^2<0 THEN 6163 ELSE FOR LR=1 TO NO+1:Y(L,LR)=Y(L,LR)+Y(LT,LR):X(L,LR)=X(L,LR)+X(LT,LR):NEXT LR:GOTO 6160
  158. 6163  NEXT LT
  159. 6164  PRINT "ONE OF THE FOLLOWING PROBLEMS EXIST:"
  160. 6165  PRINT "(1) IMPROPER CONNECTION AT ";:IF L>LS THEN PRINT"VOLTAGE SOURCE" ELSE PRINT"NODE"L
  161. 6166  PRINT"(2) CIRCUIT WILL NOT OPERATE AT A FREQUENCY OF"W/P2" RECHECK CIRCUIT CONNECTIONS USING THE 'L' COMMAND.":PRINT:RETURN
  162. 6168  DR=Y(L,L)/DE:DI=-X(L,L)/DE
  163. 6170  FOR J=1 TO NO
  164. 6180  IF J=L THEN 6260
  165. 6190  IF ND=0 THEN 6210
  166. 6200  IF J>=L THEN 6210 ELSE IF J<>ND THEN 6260
  167. 6210  IF Y(J,L)=0 AND X(J,L)=0 THEN 6260
  168. 6220  FR=Y(J,L)*DR-X(J,L)*DI:FI=X(J,L)*DR+Y(J,L)*DI
  169. 6230  FOR P=L+1 TO NO+1
  170. 6240  TR=Y(L,P)*FR-X(L,P)*FI:TI=X(L,P)*FR+Y(L,P)*FI
  171. 6245  Y(J,P)=Y(J,P)-TR:X(J,P)=X(J,P)-TI
  172. 6250  NEXT P
  173. 6260  NEXT J
  174. 6270  NEXT L
  175. 6280  FOR L=1 TO NO:DF=Y(L,L)^2+X(L,L)^2:Y(L,0)=(Y(L,NO+1)*Y(L,L)+X(L,NO+1)*X(L,L))/DF
  176. 6290  X(L,0)=(X(L,NO+1)*Y(L,L)-Y(L,NO+1)*X(L,L))/DF:NEXT
  177. 6300  IF W<>0 THEN RETURN
  178. 6310  FOR RL=1 TO CT:IF T(RL)>5 AND T(RL)<11 THEN 6330
  179. 6320  NEXT:RETURN
  180. 6330  Y(0,0)=0:X(0,0)=0
  181. 6331  DP=SGN(Y(N1(RL),0))*SQR(Y(N1(RL),0)^2+X(N1(RL),0)^2)
  182. 6332  DM=SGN(Y(N2(RL),0))*SQR(Y(N2(RL),0)^2+X(N2(RL),0)^2)
  183. 6333  SP=SGN(Y(V(RL),0))*SQR(Y(V(RL),0)^2+X(V(RL),0)^2)
  184. 6334  DP=INT(1000*DP)/1000:DM=INT(1000*DM)/1000:SP=INT(1000*SP)/1000
  185. 6340  ON T(RL)-5 GOTO 6350,6390
  186. 6345  GOTO 6320
  187. 6350  IF DP>=DM+0.7 THEN 6370
  188. 6360  PRINT"BASE-EMITTER JUNCTION OF TRANSISTOR AT B="N1(RL)"E="N2(RL)"C="V(RL):GOTO 6480
  189. 6370  IF SP>=DP THEN 6320
  190. 6380  PRINT"BASE-COLLECTOR JUNCTION OF TRANSISTOR AT B="N1(RL)"E="N2(RL)"C="V(RL):GOTO6480
  191. 6390  IF DM-0.7<DP THEN 6360
  192. 6400  IF SP>DP THEN 6380 ELSE 6320
  193. 6480  PRINT"IS REVERSE BIASED.  LINEAR CIRCUIT ANALYSIS IS NOT POSSIBLE.":RETURN
  194. 6990  REM *************** REMOVE ELEMENT *******************
  195. 7000  PRINT: INPUT "COMPONENT NUMBER";L
  196. 7010  IF L<=CT AND L>0 THEN 7030 ELSE PRINT"INVALID COMPONENT NUMBER. ENTRY IGNORED.":RETURN
  197. 7030  IF L=CT THEN 7035 ELSE FOR P=L TO CT-1:T(P)=T(P+1):N1(P)=N1(P+1):N2(P)=N2(P+1):V(P)=V(P+1):G(P)=G(P+1):NEXT:CT=CT-1:RETURN
  198. 7035  T(CT)=0:CT=CT-1:RETURN
  199. 7990  REM ************** Z CALC *****************************
  200. 8002  PRINT: PRINT"IMPEDANCE AT WHICH NODE?  ( 1 -"LS")  ";:INPUT ND: IF ND<1 OR ND>LS THEN 8002
  201. 8005  PRINT: PRINT "WORKING": PRINT:FOR L=1 TO NO:FOR CR=1 TO NO+1:Y(L,CR)=0:X(L,CR)=0:NEXT:NEXT
  202. 8010  CR=CT:FOR CT=1 TO CR
  203. 8020  IF T(CT)=5 THEN Y=1E+10:GOSUB 10040
  204. 8025  IF T(CT)<>5 THEN GOSUB 10008
  205. 8030  NEXT:CT=CR:FOR L=1 TO NO:IF L=ND THEN Y(L,NO+1)=1 ELSE Y(L,NO+1)=0
  206. 8040  X(L,NO+1)=0:NEXT:GOSUB 6150: GOTO 6065
  207. 9000  REM ************* CHANGE COMPONENT VALUES ***************
  208. 9010  PRINT: PRINT "VARIABLE COMPONENT MODE"
  209. 9015  F2$="COMPONENT VALUE": F1$="VALUE"
  210. 9020  PRINT "FREQUENCY SHOULD BE PRE-SET WITH <F> MODE <1>"
  211. 9040  PRINT: INPUT "COMPONENT # TO BE VARIED"; ZN
  212. 9050  IF ZN>CT OR ZN<1 THEN PRINT "POINT OUT OF RANGE": RETURN
  213. 9060  INPUT "MIN VALUE, MAX VALUE AND # OF POINTS"; C1,C2,IN
  214. 9070  IF C1>=0 AND C2>=0 AND C2>C1 THEN 9090
  215. 9080  PRINT "IMPROPER ENTRY": GOTO 9060
  216. 9090  PRINT "WHICH NODE? ( 1 -"LS")  ";:INPUT ND
  217. 9100  IF ND>LS OR ND<1 THEN PRINT"NODES ARE FROM 1 TO"LS"ONLY.":GOTO 9090
  218. 9110  PRINT: PRINT "WORKING";: I=0: M=IN+1
  219. 9120  REM KILL FP,FR,FY,FF: DIM FP(M),FR(M),FY(M),FF(M)
  220. 9125  IF T(ZN)<6 THEN TV=V(ZN) ELSE TV=G(ZN)
  221. 9130  FOR CX=C1 TO C2 STEP (C2-C1)/IN: I=I+1: PRINT I;
  222. 9140  IF T(ZN)<6 THEN V(ZN)=CX ELSE G(ZN)=CX
  223. 9150  FF(I)=CX:GOSUB 10000:GOSUB 6150:FY(I)=Y(ND,0):FR(I)=X(ND,0):NEXT
  224. 9155  IF T(ZN)<6 THEN V(ZN)=TV ELSE G(ZN)=TV
  225. 9158  GOTO 4400
  226. 9160  REM <BACK TO FREQ SWEEP TAB MODULE> ****
  227. 9990  REM ********************* MAT **********************
  228. 10000  FOR L=1 TO NO:FOR P=1 TO NO+1:Y(L,P)=0:X(L,P)=0:NEXT:NEXT
  229. 10002  LP=1:CR=CT:FOR CT=1 TO CR:GOSUB 10008
  230. 10004  NEXT:CT=CR:RETURN
  231. 10008  ON T(CT) GOTO 10010,10020,10030,10140,10200,10240,10250,10420
  232. 10010  IF V(CT)=0 THEN Y=1E+10 ELSE Y=1/V(CT)
  233. 10015  X=0:GOTO 10040
  234. 10020  IF W<>0 THEN X=-1/(W*V(CT)) ELSE X=0
  235. 10025  Y=0:GOTO 10040
  236. 10030  Y=0:X=W*V(CT)
  237. 10040  IF X^2+Y^2<0 AND X^2+Y^2<>0 THEN PRINT"ADMITTANCE UNDERFLOW. COMPONENT NUMBER";CT:GOTO 1000
  238. 10045  IF Y=0 THEN 10090
  239. 10050  Y(N1(CT),N1(CT))=Y(N1(CT),N1(CT))+Y
  240. 10060  Y(N1(CT),N2(CT))=Y(N1(CT),N2(CT))-Y
  241. 10070  Y(N2(CT),N1(CT))=Y(N2(CT),N1(CT))-Y
  242. 10080  Y(N2(CT),N2(CT))=Y(N2(CT),N2(CT))+Y
  243. 10090  IF X=0 THEN RETURN
  244. 10100  X(N1(CT),N1(CT))=X(N1(CT),N1(CT))+X
  245. 10110  X(N1(CT),N2(CT))=X(N1(CT),N2(CT))-X
  246. 10120  X(N2(CT),N1(CT))=X(N2(CT),N1(CT))-X
  247. 10130  X(N2(CT),N2(CT))=X(N2(CT),N2(CT))+X:RETURN
  248. 10140  Y=V(CT)*COS(P6*G(CT)):X=V(CT)*SIN(P6*G(CT))
  249. 10160  Y(N1(CT),NO+1)=Y(N1(CT),NO+1)-Y
  250. 10170  X(N1(CT),NO+1)=X(N1(CT),NO+1)-X
  251. 10180  Y(N2(CT),NO+1)=Y(N2(CT),NO+1)+Y
  252. 10190  X(N2(CT),NO+1)=X(N2(CT),NO+1)+X:RETURN
  253. 10200  Y(N1(CT),LS+LP)=Y(N1(CT),LS+LP)+1:Y(N2(CT),LS+LP)=Y(N2(CT),LS+LP)-1
  254. 10210  Y(LS+LP,N1(CT))=Y(LS+LP,N1(CT))-1:Y(LS+LP,N2(CT))=Y(LS+LP,N2(CT))+1
  255. 10220  Y(LS+LP,NO+1)=Y(LS+LP,NO+1)+V(CT)*COS(P6*G(CT)):X(LS+LP,NO+1)=X(LS+LP,NO+1)+V(CT)*SIN(P6*G(CT)):LP=LP+1:RETURN
  256. 10240  DP=N1(CT):SP=V(CT):DM=N2(CT):SM=N2(CT):GOTO 10260
  257. 10250  DP=N2(CT):SP=N2(CT):DM=N1(CT):SM=V(CT)
  258. 10260  Y(SP,DP)=Y(SP,DP)+G(CT)*0.1
  259. 10270  Y(SP,DM)=Y(SP,DM)-G(CT)*0.1
  260. 10280  Y(SM,DM)=Y(SM,DM)+G(CT)*0.1
  261. 10290  Y(SM,DP)=Y(SM,DP)-G(CT)*0.1
  262. 10300  IF W<>0 THEN 10342
  263. 10310  Y(SP,NO+1)=Y(SP,NO+1)+0.7*G(CT)*0.1
  264. 10320  Y(SM,NO+1)=Y(SM,NO+1)-0.7*G(CT)*0.1
  265. 10330  Y(DP,NO+1)=Y(DP,NO+1)+0.07
  266. 10340  Y(DM,NO+1)=Y(DM,NO+1)-0.07
  267. 10342  Y=0.1:X=0:GOTO 10040
  268. 10370  Y(SP,DM)=Y(SP,DM)-G(CT)
  269. 10380  Y(SP,DP)=Y(SP,DP)+G(CT)
  270. 10390  Y(SM,DP)=Y(SM,DP)-G(CT)
  271. 10400  Y(SM,DM)=Y(SM,DM)+G(CT):RETURN
  272. 10420  Y=1E+10:NN=N2(CT):N2(CT)=0:GOSUB 10050:N2(CT)=NN:NN=N1(CT):N1(CT)=V(CT):Y=4.99E-07:GOSUB 10050:N1(CT)=NN
  273. 10430  G(CT)=G(CT)*1E+10:DP=N2(CT):SP=N1(CT):DM=V(CT):SM=0:GOSUB 10370
  274. 10440  G(CT)=G(CT)*0:RETURN
  275. 10990  REM **************** LIST CIRCUIT *******************
  276. 11000  PRINT:PRINT,F$,"FREQUENCY="W/P2:PRINT
  277. 11001  PRINT,"COMP."TAB(7)"NODE":PRINT,"NO."TAB(7)"CONNECTION"TAB(27)"TYPE"TAB(39)"VALUE"TAB(53)"PHASE ANGLE"
  278. 11010  FOR L=1 TO CT:PRINT, L;TAB(7);
  279. 11020  ON T(L) GOTO 11030,11040,11050,11060,11070,11080,11090,11130
  280. 11022  PRINT
  281. 11025  IF DV=0 AND L/11=INT(L/11) THEN INPUT"PRESS <CR> TO CONTINUE";ZZ
  282. 11027  NEXT: REM IF DV=0 THEN PRINT: REM INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN DV=2: GOTO 11000
  283. 11028  RETURN
  284. 11030  PRINT,N1(L)"-"N2(L)TAB(27)"RESISTOR"TAB(39)V(L)
  285. 11035  GOTO 11025
  286. 11040  PRINT,N1(L)"-"N2(L)TAB(27)"INDUCTOR"TAB(39)V(L):GOTO 11025
  287. 11050  PRINT,N1(L)"-"N2(L)TAB(27)"CAPACITOR"TAB(39)V(L):GOTO 11025
  288. 11060  PRINT,N1(L)"-"N2(L)TAB(27)"CURRENT"TAB(39)V(L)TAB(53)G(L):GOTO 11025
  289. 11070  PRINT,N1(L)"-"N2(L)TAB(27)"VOLTAGE"TAB(39)V(L)TAB(53)G(L):GOTO 11025
  290. 11080  PRINT,"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"NPN TRANS."TAB(39)" BETA="G(L):GOTO 11025
  291. 11090  PRINT,"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"PNP TRANS."TAB(39)" BETA="G(L):GOTO 11025
  292. 11130  PRINT, "O="N1(L)"-="N2(L)"+="V(L)TAB(27)"OP AMP"TAB(39)" GAIN="G(L):GOTO 11025
  293. 11990  REM **************** CURRENT CALC *******************
  294. 12000  PRINT: PRINT"WORKING": PRINT:ND=0:GOSUB 10000
  295. 12005  GOSUB 6150
  296. 12010  GOSUB 6065: ND=LS: FOR LQ=1 TO CT
  297. 12015  IF T(LQ)=5 THEN 12030
  298. 12020  NEXT
  299. 12025  REM  PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN DV=2: GOTO 12010
  300. 12026  RETURN
  301. 12030  ND=ND+1:GOSUB 6085
  302. 12040  GOTO 12020
  303. 13000  REM *************** GRAPHICS ******************
  304. 13210  REM ********************* PLOT ROUTEEN ************
  305. 13211  LPRINT: IF LX=3 THEN LPRINT,"LOG FREQUENCY PLOT"; ELSE LPRINT,F2$" PLOT";
  306. 13212  LPRINT ,TAB(35) F$:LPRINT:LF=LL-18:SN=0:SH=0:FOR I=1 TO M
  307. 13213  IF V$="P" THEN 13214 ELSE MG=SQR(FY(I)^2+FR(I)^2):GOTO 13215
  308. 13214  IF FY(I)=0 THEN K=SGN(FR(I))*90 ELSE IF FY(I)>0 THEN K=1/P6*ATN(FR(I)/FY(I)) ELSE K=1/P6*ATN(FR(I)/FY(I))+180
  309. 13215  IF V$="V" THEN FP(I)=MG ELSE FP(I)=K
  310. 13217  IF FP(I)>SH THEN SH=FP(I)
  311. 13218  IF FP(I)<SN THEN SN=FP(I):NEXT
  312. 13219  IF SN>0 THEN SN=0 ELSE SN=-SN
  313. 13220  SF=SH+SN: ZV=INT(LF*SN/SF+11): REM PRECISION 3
  314. 13222  LPRINT, F1$ TAB(LF/2+7) NA$
  315. 13223  I1=INT(LF/2): I2=INT(LF*SH/(2*SF)): I3=INT(-LF*SN/(2*SF)): IQ=INT(LF/4): IH=INT(3*LF/4)
  316. 13224  IF SH=0 THEN LPRINT,TAB(11) SN TAB(IQ+11) 3*SN/4 TAB(I1+11) SN/2 TAB(IH+11) SN/4 TAB(LF+11) SH: GOTO 13229
  317. 13225  IF SN=0 THEN LPRINT,TAB(11) SN TAB(IQ+11) SH/4 TAB(I1+11) SH/2 TAB(IH+11) 3*SH/4 TAB(LF+11) SH: GOTO 13229
  318. 13226  IF ZV<(LF/4+11) THEN LPRINT,TAB(11) SN TAB(ZV) "0" TAB(ZV+I2) SH/2 TAB(LF+11) SH: GOTO 13229
  319. 13227  IF ZV>(3*LF/4+11) THEN LRINT,TAB(11) SN TAB(I3+11) SN/2 TAB(ZV) "0" TAB(LF+11) SH: GOTO 13229
  320. 13228  LPRINT,TAB(11) SN TAB(I3+11) SN/2 TAB(ZV) "0" TAB(ZV+I2) SH/2 TAB(LF+11) SH
  321. 13229  REM LPRINT STRING$,("-",10) "+";
  322. 13230  IF SN=0 OR SH=0 THEN LPRINT, STRING$("-",IQ-1) "+" STRING$("-",I1-IQ-1) "+" STRING$("-",IH-I1-1) "+" STRING$("-",LF-IH-1) "+": GOTO 13240
  323. 13231  IF ZV<(LF/4+11) THEN LPRINT, STRING$("-",ZV-12) "+" STRING$("-",I2-1) "+" STRING$("-",LF-ZV-I2+10) "+": GOTO 13240
  324. 13232  IF ZV>(3*LF/4+11) THEN LPRINT, STRING$("-",I3-1) "+" STRING$("-",ZV-I3-12) "+" STRING$("-",LF-ZV+10) "+": GOTO 13240
  325. 13233  LPRINT, STRING$("-",I3-1) "+" STRING$("-",ZV-I3-12) "+" STRING$("-",I2-1) "+" STRING$("-",LF-ZV-I2+10) "+"
  326. 13240  CN=0:FOR I=1 TO M:VN=INT(LF*(SN+FP(I))/SF+11):LPRINT,FF(I);
  327. 13241  IF VN>11 THEN LPRINT,TAB(11)"|";
  328. 13242  IF VN=ZV THEN LPRINT, TAB(ZV)"*": GOTO 13245
  329. 13243  IF VN>ZV AND ZV>11 THEN LPRINT,TAB(ZV)"."TAB(VN)"*" ELSE IF VN>ZV THEN PRINT#DV,TAB(VN)"*": GOTO 13245
  330. 13244  LPRINT,TAB(VN)"*"TAB(ZV)"."
  331. 13245  IF DV=0 AND CN<>0 AND CN/12=INT(CN/12) THEN INPUT"PRESS <CR> TO CONTINUE"; A$
  332. 13246  CN=CN+1
  333. 13247  NEXT I: REM  INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN DV=2: LL=74: GOTO 13211
  334. 13248  IF V$="V" THEN PRINT:INPUT"WANT TO PLOT PHASE ANGLE (Y/N)";Q$:IF Q$="Y" THEN NA$="ANGLE ":V$="P":DV=0:LL=XX:GOTO 13211
  335. 13249  IF V$="P" THEN PRINT:INPUT"WANT TO PLOT VOLTAGE (Y/N)";Q$:IF Q$="Y" THEN NA$="VOLTAGE ":V$="V":DV=0:LL=XX:GOTO 13211
  336. 13250  REM PRECISION 4: RETURN
  337.